﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Comissoes.Utilities;

namespace Comissoes.Models
{
    public class ClientesModel
    {
        public CLIENTES cliente { get; set; }
        private PessoasModel pessoa { get; set; }
        List<string> erros;

        public ClientesModel(Int32? id)
        {
            xcontEntities db = new xcontEntities();

            if (id.HasValue && db.CLIENTES.Any(t => t.COD_CLI == id))
            {
                this.cliente = db.CLIENTES.Include("PESSOAS").FirstOrDefault(t => t.COD_CLI == id);
                pessoa = new PessoasModel(cliente.PESSOAS);
            }
            else
            {
                this.cliente = new CLIENTES();
                this.cliente.PESSOAS = new PESSOAS();
                pessoa = new PessoasModel();
            }
        }

        public List<string> UpdateValidate(FormCollection form)
        {
            erros = new List<string>();

            erros.Union(pessoa.UpdateValidate(form));

            return erros;
        }

        public List<string> Update(FormCollection form)
        {
            xcontEntities db = new xcontEntities();
            erros = new List<string>();

            try
            {
                this.pessoa.Update(db, form);

                if (db.CLIENTES.Any(t => t.COD_CLI == this.cliente.COD_CLI))
                {
                    this.cliente = db.CLIENTES.FirstOrDefault(t => t.COD_CLI == this.cliente.COD_CLI);
                }
                else
                {
                    this.cliente.DATACAD_CLI = DateTime.Now;
                    db.AddToCLIENTES(this.cliente);
                }

                this.cliente.PESSOAS = this.pessoa.pessoa;

                this.cliente.ATIVO_CLI = form["ATIVO_CLI"].Contains("true") ? "A" : "B";
                this.cliente.LIMITE_CLI = Decimal.Parse(form["LIMITE_CLI"]);
                this.cliente.INTERESSE_CLI = form["INTERESSE_CLI"];
                if (Validations.Data(form["DATAULTVIS_CLI"]))
                    this.cliente.DATAULTVIS_CLI = DateTime.Parse(form["DATAULTVIS_CLI"]);

                db.SaveChanges();
            }
            catch (Exception ex)
            {
                erros.Add(ex.Message);
                if (ex.InnerException != null)
                    erros.Add(ex.InnerException.Message);
            }

            return erros;
        }
    }
}
